/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.jjsoft.celularessuc.gco.neg;

import com.jjsoft.celularessuc.gco.dao.GenericController;
import com.jjsoft.celularessuc.gco.mdl.Gasto;
import com.jjsoft.celularessuc.gco.mdl.Ingreso;
import com.jjsoft.celularessuc.gco.mdl.Serviciotecnico;
import com.jjsoft.celularessuc.gco.mdl.Sucursal;
import com.jjsoft.celularessuc.gco.util.configuraciones;
import java.util.Date;
import java.util.List;

/**
 *
 * @author Johnny
 */
public class ServicioTecnicoManager {

    GenericController<Serviciotecnico> controladorServicio = new GenericController<Serviciotecnico>();

    public void registrarServicioTecnico(Serviciotecnico serviciotecnico) {
        controladorServicio.create(serviciotecnico);
    }

    public void entregarServicioTecnico(Serviciotecnico serviciotecnico) {
        serviciotecnico.setEstado(1);
        Ingreso ingreso = new Ingreso();
        IngresoManager im = new IngresoManager();
        Date d = new Date();
        ingreso.setFecha(d);
        ingreso.setConcepto("Servicio Tecnico a " + serviciotecnico.getCedulaCliente().getNombres() + " " + serviciotecnico.getCedulaCliente().getApellidos());
        ingreso.setValor(serviciotecnico.getPaga());
        ingreso.setHora(d.toLocaleString().substring(d.toLocaleString().indexOf(" ")));
        ingreso.setIdUsuario(configuraciones.getInstance().getUsuario());
        ingreso.setNumDocumento(serviciotecnico.getIdServicioTecnico());
        im.registrarIngreso(ingreso);
        DiarioManager dm = new DiarioManager();
        configuraciones.getInstance().getDiario().setValor(configuraciones.getInstance().getDiario().getValor() + serviciotecnico.getPaga());
        dm.editarDiario(configuraciones.getInstance().getDiario());
        try {
            controladorServicio.edit(serviciotecnico);
        } catch (Exception ex) {
            System.err.println(ex.getLocalizedMessage());
        }
    }

    public void anularServicioTecnico(Serviciotecnico serviciotecnico) {
        serviciotecnico.setEstado(2);
        Gasto egreso = new Gasto();
        Date d = new Date();
        egreso.setFecha(d);
        egreso.setConcepto("Anulación de Servicio Tecnico N: "+serviciotecnico.getIdServicioTecnico());
        egreso.setValor(serviciotecnico.getPaga());
        egreso.setHora(d.toLocaleString().substring(d.toLocaleString().indexOf(" ")));
        egreso.setIdUsuario(configuraciones.getInstance().getUsuario());
        GastoManager gm = new GastoManager();
        gm.registrarGasto(egreso);
        configuraciones.getInstance().getDiario().setValor(configuraciones.getInstance().getDiario().getValor()-serviciotecnico.getPaga());
        DiarioManager dm = new DiarioManager();
        dm.editarDiario(configuraciones.getInstance().getDiario());
        try {
            controladorServicio.edit(serviciotecnico);
        } catch (Exception ex) {
            System.err.println(ex.getLocalizedMessage());
        }
    }
    public Serviciotecnico buscarServicioTecnicoPorNumero(int numero)
    {
        Serviciotecnico st = controladorServicio.find(new Serviciotecnico(),numero);
        return st;
        
    }
    public List<Serviciotecnico> buscarPorCedula(String cedula)
    {
        return controladorServicio.findWhere(new Serviciotecnico(), "cedula_cliente='"+cedula+"'");
    }
    public List<Serviciotecnico> buscarPorSerie(String serie)
    {
        return controladorServicio.findWhere(new Serviciotecnico(), "numeroSerie='"+serie+"'");
    }
    
    public int buscaNumero() {
        try {
            int numero = controladorServicio.findEntities(1, controladorServicio.getCount(new Serviciotecnico()) - 1, new Serviciotecnico()).get(0).getIdServicioTecnico().intValue() + 1;
            return numero;
        } catch (Exception ex) {
            return 1;
        }
    }
    public List<Serviciotecnico> buscarPorFechas(Date fecha1, Date fecha2)
    {
        String fechaIni=(fecha1.getYear()+1900)+"-"+(fecha1.getMonth()+1)+"-"+fecha1.getDate()+" 00:00:00";
        String fechafin=(fecha2.getYear()+1900)+"-"+(fecha2.getMonth()+1)+"-"+fecha2.getDate()+" 23:59:59";
        return controladorServicio.findWhere(new Serviciotecnico(), "fecha>='"+fechaIni+"' and fecha<='"+fechafin+"'");
    }
    public List<Serviciotecnico> buscarPorFechas(Date fecha1, Date fecha2, Sucursal sucursal)
    {
        String fechaIni=(fecha1.getYear()+1900)+"-"+(fecha1.getMonth()+1)+"-"+fecha1.getDate()+" 00:00:00";
        String fechafin=(fecha2.getYear()+1900)+"-"+(fecha2.getMonth()+1)+"-"+fecha2.getDate()+" 23:59:59";
        return controladorServicio.findWhere(new Serviciotecnico(), "fecha>='"+fechaIni+"' and fecha<='"+fechafin+"' and idSucursal="+sucursal.getIdsucursal());
    }
}
